package 反射;

import java.lang.reflect.Constructor;

public class 反射_4_通过反射创建对象 {
    public static void main(String[] args) {
        try {
            Class c1 = Class.forName("反射.反射_2_父类");
//            System.out.println(c1.getName());

//            Object obj=  c1.newInstance();
//            反射_2_父类 dx = (反射_2_父类) obj;
              Constructor c1_1 = c1.getConstructor(int.class);//获取public方法
            反射_2_父类 x = (反射_2_父类) c1_1.newInstance(15);//传入参数

            Constructor c2_1 = c1.getDeclaredConstructor(String.class,int.class);//获取私有 两个参数的构造方法
//            反射_2_父类 x2  = (反射_2_父类) c2_1.newInstance("wc",1);
            //但是私有的 无法 调用
            c2_1.setAccessible(true);//解除 封装
            反射_2_父类 x2  = (反射_2_父类) c2_1.newInstance("wc",1);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
